package com.xixi.core.rpc.registry;

import com.xixi.core.rpc.config.RegistryConfig;
import com.xixi.core.rpc.model.ServiceMetaInfo;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * @author: zxh
 * @date: 2024/8/22 23:16
 * @description: 注册中心
 */
public interface Registry {

	// 初始化
	void init(RegistryConfig registryConfig);

	// 注册服务（服务端）
	void registry(ServiceMetaInfo serviceMetaInfo) throws Exception;

	// 注销服务（服务端）
	void unRegistry(ServiceMetaInfo serviceMetaInfo) throws ExecutionException, InterruptedException;

	// 服务发现，获取某服务的所有节点，消费端
	List<ServiceMetaInfo> serviceDiscovery(String serviceKey);

	// 服务销毁
	void destroy();

	// 心跳检测（服务端）
	void heartBeat();

	// 服务监听（消费端）
	void watch(String serviceNodeKey);
}
